perm filename COMPIL[1,JMC] blob sn#005226 filedate 1969-12-01 generic text, type T, neo UTF8
00100	(DE COMPAC (E AC) (COND ((ATOM E) (LIST (LIST 
00200	@MOVE AC (COND ((NUMBERP E) (LIST @QUOTE E))
00300	(T (LIST @SPECIAL E))))))
00400	((EQ (CAR E) @PLUS) (APPEND (COMPAC (CADR E) AC)
00500	(COMPLUS (CDDR E) AC)))
00600	((EQ (CAR E) @TIMES) (APPEND (COMPAC (CADR E) AC)
00700	(COMTIMES (CDDR E) AC)))))
00800	
00900	(DE COMPLUS (U AC) (COND ((NULL U) NIL) ((ATOM (CAR U))
01000	(CONS 
01100	(LIST @FADR AC (LIST (COND ((NUMBERP (CAR U)) @QUOTE)
01200	(T @SPECIAL)) (CAR U))) (COMPLUS (CDR U) AC)))
01300	(T (APPEND (COMPAC (CAR U) (ADD1 AC))
01400	(CONS (LIST @FADR AC (ADD1 AC)) (COMPLUS (CDR U) AC))))))
01500	
01600	(DE COMTIMES (U AC) (COND ((NULL U) NIL) ((ATOM (CAR U))
01700	(CONS 
01800	(LIST @FMPR AC (LIST (COND ((NUMBERP (CAR U)) @QUOTE)
01900	(T @SPECIAL)) (CAR U))) (COMTIMES (CDR U) AC)))
02000	(T (APPEND (COMPAC (CAR U) (ADD1 AC))
02100	(CONS (LIST @FMPR AC (ADD1 AC)) (COMTIMES (CDR U) AC))))))
02200	(DE MERGE (U V) (COND ((NULL U) V) ((NULL V) U)
02300	((LESSP (CAAR V) (CAAR U)) (CONS (CAR U)
02400	(MERGE (CDR U) V))) (T (CONS (CAR V) (MERGE U(CDR V))))))
02500	
02600	(DE SORT (U) (SORTA U NIL))
02700	
02800	(DE SORTA (U V) (COND ((NULL U) (SORTB NIL V))
02900	(T (SORTA (CDR U) (SORTC (LIST (CAR U)) V)))))
03000	
03100	(DE SORTC (U V) (COND ((NULL V) (LIST U))
03200	((NULL (CAR V)) (CONS U (CDR V)))
03300	(T (CONS NIL (SORTC (MERGE U (CAR V)) (CDR V))))))
03400	
03500	(DE SORTB (U V) (COND ((NULL V) U)
03600	(T (SORTB (MERGE U (CAR V)) (CDR V)))))
03700	
03800	(DE ARRANGE (E) (COND ((ATOM E) (CONS 0 E))
03900	(T ((LAMBDA (Z) 
04000	((LAMBDA (W) (CONS (MAX (CAAR Z) W) (CONS W (CONS (CAR E) Z))))
04100	(ADD1 (CAADR Z))))
04200	(SORT (MAPCAR (FUNCTION ARRANGE) (CDR E)))))))
04300